The present invention relates to a method of processing data independently of a specific operating system (OS).
In recent years, computers have been available which handle moving images and audio data that are variously used as multimedia data. Devices to record and reproduce such data are also experiencing widespread use. For example, a hard disk recorder has been developed to convert television moving images and the like in real time using a moving image codec and to record the moving images on a hard disk. An audiovisual player uses a video display apparatus to display moving image content data recorded as digital data on an optical disk, such as a DVD. In general, the content processing requires the processing of content data at a specified bit rate within a specified time.
A variety of apparatuses need to use multimedia contents. For this purpose, it is important to be able to easily develop program modules that perform complicated streaming processes. To do this, there are technologies for performing programs to process data contents in the OS kernel that can easily provide high performance. A stream is a series of data that needs to be processed unidirectionally in a predetermined order. For example, there is available a series of audio data or moving image data. The streaming process signifies processing data included in these streams.
A general OS uses two spaces: a user space to perform applications and a kernel space to perform OS functions. The kernel space enables high-speed execution of processes. Basically, however, programs to be performed in the kernel largely depend on specifications of the OS where the kernel is installed. For example, individual OS's require different interfaces or procedures to use the OS functions. It is also a known fact that device drivers needed to use devices are specific to the platforms and cannot be shared among them. Further, there are methods of performing processes in the kernel space. One example is to process the contents by concatenating a plurality of device drivers called filters to process data (e.g., JP-A No. 283195/1998).
This method processes data contents as follows. An application program performed in the user space generates a software module called a filter in the kernel space. Inputs and outputs for a plurality of filters are connected to constitute a path for content data. Then, the application program makes a request to start or stop processes. In this case, the filters and device drivers are modules specific to the devices and data formats and each have respective input/output and control interfaces. One filter processes data and passes it to another filter to perform the data processing. According to this technique, all filters operate in the OS kernel, making it possible to provide a high performance. However, this technique gives no consideration to priorities in a plurality of content processes. When a plurality of contents are to be recorded and reproduced simultaneously, there may be a request to give preference to the recording. It is difficult to satisfy such request.
As mentioned above, it is known to sometimes implement drivers to process streams in the OS kernel space because the drivers can easily ensure the desired performance. The drivers are highly dependent on a platform, i.e., a combination of the OS and the hardware configuration. Programs cannot be compliant with different platforms. Each platform has a specific method of processing content data. Programs to process contents need to be developed for individual platforms. There has been a first problem of increasing development processes.
The technique employed in JP-A No. 283195/1998 does not provide a management function for content processes. When a plurality of contents need to be processed simultaneously, it has been impossible to prioritize each process. For example, let us consider a case of simultaneously performing two processes: one process to obtain data from a device and record the data on a storage and the other process to obtain data from the device and display the data on a display. If the former process needs to be prioritized, a function to unify and manage these processes is not provided. There has been a second problem of difficulty in appropriately changing the priorities of the processes.
If content processes take place based on a specific implementation in is the above-mentioned case, hardware resources are not managed or allocated properly. There has been a third problem of decreasing the CPU resource needed for the processes.